import type {
  InternalAxiosRequestConfig,
  AxiosResponse,
  AxiosRequestConfig
} from 'axios'

// 定义请求拦截器接口
export interface IRequestInterceptors<T = AxiosResponse> {
  // 请求拦截器，接收一个InternalAxiosRequestConfig类型的参数，返回一个InternalAxiosRequestConfig类型的参数
  requestSuccessFn?: (
    config: InternalAxiosRequestConfig
  ) => InternalAxiosRequestConfig
  // 请求拦截器错误处理，接收一个any类型的参数，返回一个any类型的参数
  requestFailureFn?: (err: any) => any
  responseSuccessFn?: (res: T) => T
  responseFailureFn?: (err: any) => any
}

// 定义请求配置接口，继承自AxiosRequestConfig
export interface IRequestConfig<T = AxiosResponse> extends AxiosRequestConfig {
  // 拦截器配置
  interceptors?: IRequestInterceptors<T>
}
